Zum Hauptinhalt springen

Internal Storage

Der Internal Storage ist eine eingebettete SQLite-Datenbank, die jedem 42°OS-Konto zur Verfügung steht. Workflows können über den Internal Storage Agent Daten lesen und schreiben — ohne externe Datenbankverbindung, ohne Credentials, ohne Setup.

Typische Einsatzfälle:

  • Extrahierte Dokumentdaten strukturiert ablegen (Rechnungen, Bestellungen, Lieferscheine)
  • Zustandsinformationen zwischen Workflow-Abschnitten speichern
  • Mapping- und Lookup-Tabellen verwalten
  • Gedächtnis für lernfähige Workflows aufbauen

Tabellen anlegen und verwalten

Tabellen werden nicht im Workflow selbst angelegt, sondern über den Internal-Storage-Bereich in der Plattform-Oberfläche.

Tabelle erstellen

Im Internal-Storage-Bereich befindet sich ein Texteingabefeld, in das du ein SQL-CREATE TABLE-Statement eingibst:

CREATE TABLE bestellungen (
id INTEGER PRIMARY KEY AUTOINCREMENT,
dokument_id TEXT,
lieferant TEXT,
bestelldatum TEXT,
status TEXT DEFAULT 'neu',
erstellt_am TEXT DEFAULT (datetime('now'))
);

📸 Screenshot: [Platzhalter — Internal-Storage-Bereich: Texteingabefeld mit CREATE-Statement]

Nach dem Absenden erscheint die neue Tabelle in der Tabellenliste.

Tabellen einsehen

Alle vorhandenen Tabellen sind als Liste aufgeführt. Per Klick auf einen Listeneintrag kannst du:

  • Die Spalten der Tabelle einsehen (Name, Datentyp)
  • Die Einträge der Tabelle durchblättern

📸 Screenshot: [Platzhalter — Tabellenliste im Internal-Storage-Bereich]

📸 Screenshot: [Platzhalter — Spaltenansicht und Einträge einer Tabelle]


Der Internal Storage Agent

Der Internal Storage Agent ist der einzige Weg, aus einem Workflow heraus auf den Internal Storage zuzugreifen. Es gibt keinen getrennten Read- und Write-Agent — die Unterscheidung erfolgt allein durch das SQL-Statement.

Konfiguration

In der Agent-Konfiguration wird direkt ein SQL-Statement eingegeben. Liquid Templating ist in SQL-Statements vollständig unterstützt — du kannst Werte aus der eingehenden Nachricht direkt in die Abfrage einsetzen.

Schreiben (INSERT):

INSERT INTO bestellungen (dokument_id, lieferant, bestelldatum, status)
VALUES ('{{ dokument_id }}', '{{ lieferant_name }}', '{{ bestelldatum }}', 'extrahiert');

Lesen (SELECT):

SELECT dokument_id, lieferant, bestelldatum, status
FROM bestellungen
WHERE dokument_id = '{{ dokument_id }}';

Aktualisieren (UPDATE):

UPDATE bestellungen
SET status = 'verarbeitet'
WHERE dokument_id = '{{ dokument_id }}';

📸 Screenshot: [Platzhalter — Internal Storage Agent: SQL-Statement in der Konfiguration]

Ausgabe

  • SELECT-Abfragen geben das Ergebnis als JSON-Array unter dem Schlüssel result in der Nachricht aus. Jede Zeile wird als Objekt mit den Spaltennamen als Schlüssel dargestellt.
  • INSERT/UPDATE/DELETE geben keine Datenzeilen zurück. Die Nachricht wird mit einem Bestätigungsstatus weitergeleitet.

SQLite-Besonderheiten

Der Internal Storage basiert auf SQLite. Einige Punkte die sich von anderen Datenbanken unterscheiden:

ThemaSQLite-Verhalten
DatentypenFlexibel — SQLite erzwingt Typen nicht strikt. TEXT, INTEGER, REAL sind die gängigsten.
AutoincrementINTEGER PRIMARY KEY AUTOINCREMENT für automatische IDs
DatumsformatKein nativer Datumstyp. Datumsangaben als TEXT im Format YYYY-MM-DD oder YYYY-MM-DDTHH:MM:SS speichern.
Groß-/KleinschreibungLIKE ist standardmäßig case-insensitive für ASCII. Für konsistentes Verhalten LOWER() verwenden.
Aktuelle Zeitdatetime('now') statt NOW() oder GETDATE()
BooleanKein nativer Boolean-Typ. 0 und 1 als INTEGER verwenden.

Wann den Internal Storage nutzen?

SituationEmpfehlung
Extrahierte Daten für spätere Workflow-Schritte sichernInternal Storage
Zustand zwischen modularen Workflow-Abschnitten teilenInternal Storage
Lookup- oder Mapping-Tabelle verwaltenInternal Storage
Daten in ein externes ERP/CRM schreibenDatabase Agent
Große Datenmengen oder komplexe AbfragenDatabase Agent (externe DB)

🔗 Vertiefung: Zustandsnormalisierung durch SQL-Persistenz erklärt das Entwurfsmuster hinter der SQL-Persistenz.

🔗 Vertiefung: SQL — Daten abfragen und schreiben beschreibt die SQL-Syntax im Detail.